
package timer;

import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
import java.util.Date;
import java.text.DateFormat;

public class TimerDemo {
    static javax.swing.JLabel lblHora;
    Timer timer;
   
    public TimerDemo() {
        iniLabel();
        timer = new Timer(true);
        timer.schedule(new RunTimer(), // TimerTask
                       1000,           // retardo 
                       2000);          // intervalo   
    }
    
    void iniLabel() {
        lblHora = new javax.swing.JLabel();
        lblHora.setFont(new java.awt.Font("Dialog", 0, 24));
        lblHora.setForeground(new java.awt.Color(0, 102, 102));
        lblHora.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblHora.setBorder(new javax.swing.border.EtchedBorder(javax.swing.border.EtchedBorder.RAISED));
        lblHora.setPreferredSize(new java.awt.Dimension(120, 40));
    }    
    
    class RunTimer extends TimerTask {
        Calendar cal;
        Date date;
        DateFormat dfmt; 
        
        public void run() {
            // obtiene el tipo de calendario por defecto (gregoriano)
            cal = Calendar.getInstance();
            // obtiene la fecha y hora actual del sistema.
            date = cal.getTime();
            // obtiene formato default de la hora = hh:mm:ss
            dfmt = DateFormat.getTimeInstance();
            // devuelve la hora en el formato definido
            lblHora.setText(dfmt.format(date));
        }
    }

    public static void main(String[] args) {
        new TimerDemo();
        javax.swing.JOptionPane.showMessageDialog(null,
                    lblHora,
                    "Timer",
                    javax.swing.JOptionPane.PLAIN_MESSAGE);
        System.exit(0);        
    }
    
}
